minus2(X, s1(Y)) -> pred1(minus2(X, Y))
minus2(X, 0) -> X
pred1(s1(X)) -> X
le2(s1(X), s1(Y)) -> le2(X, Y)
le2(s1(X), 0) -> false
le2(0, Y) -> true
gcd2(0, Y) -> 0
gcd2(s1(X), 0) -> s1(X)
gcd2(s1(X), s1(Y)) -> if3(le2(Y, X), s1(X), s1(Y))
if3(true, s1(X), s1(Y)) -> gcd2(minus2(X, Y), s1(Y))
if3(false, s1(X), s1(Y)) -> gcd2(minus2(Y, X), s1(X))
↳ QTRS
↳ DependencyPairsProof
minus2(X, s1(Y)) -> pred1(minus2(X, Y))
minus2(X, 0) -> X
pred1(s1(X)) -> X
le2(s1(X), s1(Y)) -> le2(X, Y)
le2(s1(X), 0) -> false
le2(0, Y) -> true
gcd2(0, Y) -> 0
gcd2(s1(X), 0) -> s1(X)
gcd2(s1(X), s1(Y)) -> if3(le2(Y, X), s1(X), s1(Y))
if3(true, s1(X), s1(Y)) -> gcd2(minus2(X, Y), s1(Y))
if3(false, s1(X), s1(Y)) -> gcd2(minus2(Y, X), s1(X))
IF3(false, s1(X), s1(Y)) -> MINUS2(Y, X)
IF3(true, s1(X), s1(Y)) -> GCD2(minus2(X, Y), s1(Y))
IF3(false, s1(X), s1(Y)) -> GCD2(minus2(Y, X), s1(X))
MINUS2(X, s1(Y)) -> PRED1(minus2(X, Y))
LE2(s1(X), s1(Y)) -> LE2(X, Y)
GCD2(s1(X), s1(Y)) -> IF3(le2(Y, X), s1(X), s1(Y))
GCD2(s1(X), s1(Y)) -> LE2(Y, X)
IF3(true, s1(X), s1(Y)) -> MINUS2(X, Y)
MINUS2(X, s1(Y)) -> MINUS2(X, Y)
minus2(X, s1(Y)) -> pred1(minus2(X, Y))
minus2(X, 0) -> X
pred1(s1(X)) -> X
le2(s1(X), s1(Y)) -> le2(X, Y)
le2(s1(X), 0) -> false
le2(0, Y) -> true
gcd2(0, Y) -> 0
gcd2(s1(X), 0) -> s1(X)
gcd2(s1(X), s1(Y)) -> if3(le2(Y, X), s1(X), s1(Y))
if3(true, s1(X), s1(Y)) -> gcd2(minus2(X, Y), s1(Y))
if3(false, s1(X), s1(Y)) -> gcd2(minus2(Y, X), s1(X))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
IF3(false, s1(X), s1(Y)) -> MINUS2(Y, X)
IF3(true, s1(X), s1(Y)) -> GCD2(minus2(X, Y), s1(Y))
IF3(false, s1(X), s1(Y)) -> GCD2(minus2(Y, X), s1(X))
MINUS2(X, s1(Y)) -> PRED1(minus2(X, Y))
LE2(s1(X), s1(Y)) -> LE2(X, Y)
GCD2(s1(X), s1(Y)) -> IF3(le2(Y, X), s1(X), s1(Y))
GCD2(s1(X), s1(Y)) -> LE2(Y, X)
IF3(true, s1(X), s1(Y)) -> MINUS2(X, Y)
MINUS2(X, s1(Y)) -> MINUS2(X, Y)
minus2(X, s1(Y)) -> pred1(minus2(X, Y))
minus2(X, 0) -> X
pred1(s1(X)) -> X
le2(s1(X), s1(Y)) -> le2(X, Y)
le2(s1(X), 0) -> false
le2(0, Y) -> true
gcd2(0, Y) -> 0
gcd2(s1(X), 0) -> s1(X)
gcd2(s1(X), s1(Y)) -> if3(le2(Y, X), s1(X), s1(Y))
if3(true, s1(X), s1(Y)) -> gcd2(minus2(X, Y), s1(Y))
if3(false, s1(X), s1(Y)) -> gcd2(minus2(Y, X), s1(X))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDP
LE2(s1(X), s1(Y)) -> LE2(X, Y)
minus2(X, s1(Y)) -> pred1(minus2(X, Y))
minus2(X, 0) -> X
pred1(s1(X)) -> X
le2(s1(X), s1(Y)) -> le2(X, Y)
le2(s1(X), 0) -> false
le2(0, Y) -> true
gcd2(0, Y) -> 0
gcd2(s1(X), 0) -> s1(X)
gcd2(s1(X), s1(Y)) -> if3(le2(Y, X), s1(X), s1(Y))
if3(true, s1(X), s1(Y)) -> gcd2(minus2(X, Y), s1(Y))
if3(false, s1(X), s1(Y)) -> gcd2(minus2(Y, X), s1(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
LE2(s1(X), s1(Y)) -> LE2(X, Y)
POL( LE2(x1, x2) ) = 3x2 + 3
POL( s1(x1) ) = x1 + 3
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
↳ QDP
minus2(X, s1(Y)) -> pred1(minus2(X, Y))
minus2(X, 0) -> X
pred1(s1(X)) -> X
le2(s1(X), s1(Y)) -> le2(X, Y)
le2(s1(X), 0) -> false
le2(0, Y) -> true
gcd2(0, Y) -> 0
gcd2(s1(X), 0) -> s1(X)
gcd2(s1(X), s1(Y)) -> if3(le2(Y, X), s1(X), s1(Y))
if3(true, s1(X), s1(Y)) -> gcd2(minus2(X, Y), s1(Y))
if3(false, s1(X), s1(Y)) -> gcd2(minus2(Y, X), s1(X))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
MINUS2(X, s1(Y)) -> MINUS2(X, Y)
minus2(X, s1(Y)) -> pred1(minus2(X, Y))
minus2(X, 0) -> X
pred1(s1(X)) -> X
le2(s1(X), s1(Y)) -> le2(X, Y)
le2(s1(X), 0) -> false
le2(0, Y) -> true
gcd2(0, Y) -> 0
gcd2(s1(X), 0) -> s1(X)
gcd2(s1(X), s1(Y)) -> if3(le2(Y, X), s1(X), s1(Y))
if3(true, s1(X), s1(Y)) -> gcd2(minus2(X, Y), s1(Y))
if3(false, s1(X), s1(Y)) -> gcd2(minus2(Y, X), s1(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
MINUS2(X, s1(Y)) -> MINUS2(X, Y)
POL( MINUS2(x1, x2) ) = 2x1 + 2x2 + 2
POL( s1(x1) ) = 3x1 + 1
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ PisEmptyProof
↳ QDP
minus2(X, s1(Y)) -> pred1(minus2(X, Y))
minus2(X, 0) -> X
pred1(s1(X)) -> X
le2(s1(X), s1(Y)) -> le2(X, Y)
le2(s1(X), 0) -> false
le2(0, Y) -> true
gcd2(0, Y) -> 0
gcd2(s1(X), 0) -> s1(X)
gcd2(s1(X), s1(Y)) -> if3(le2(Y, X), s1(X), s1(Y))
if3(true, s1(X), s1(Y)) -> gcd2(minus2(X, Y), s1(Y))
if3(false, s1(X), s1(Y)) -> gcd2(minus2(Y, X), s1(X))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
IF3(true, s1(X), s1(Y)) -> GCD2(minus2(X, Y), s1(Y))
IF3(false, s1(X), s1(Y)) -> GCD2(minus2(Y, X), s1(X))
GCD2(s1(X), s1(Y)) -> IF3(le2(Y, X), s1(X), s1(Y))
minus2(X, s1(Y)) -> pred1(minus2(X, Y))
minus2(X, 0) -> X
pred1(s1(X)) -> X
le2(s1(X), s1(Y)) -> le2(X, Y)
le2(s1(X), 0) -> false
le2(0, Y) -> true
gcd2(0, Y) -> 0
gcd2(s1(X), 0) -> s1(X)
gcd2(s1(X), s1(Y)) -> if3(le2(Y, X), s1(X), s1(Y))
if3(true, s1(X), s1(Y)) -> gcd2(minus2(X, Y), s1(Y))
if3(false, s1(X), s1(Y)) -> gcd2(minus2(Y, X), s1(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
IF3(true, s1(X), s1(Y)) -> GCD2(minus2(X, Y), s1(Y))
IF3(false, s1(X), s1(Y)) -> GCD2(minus2(Y, X), s1(X))
Used ordering: Polynomial Order [17,21] with Interpretation:
GCD2(s1(X), s1(Y)) -> IF3(le2(Y, X), s1(X), s1(Y))
POL( minus2(x1, x2) ) = x1
POL( true ) = 1
POL( GCD2(x1, x2) ) = max{0, 3x1 + 3x2 - 2}
POL( false ) = 1
POL( IF3(x1, ..., x3) ) = max{0, 3x2 + 3x3 - 2}
POL( 0 ) = max{0, -2}
POL( s1(x1) ) = x1 + 3
POL( le2(x1, x2) ) = max{0, -3}
POL( pred1(x1) ) = max{0, x1 - 2}
minus2(X, 0) -> X
pred1(s1(X)) -> X
minus2(X, s1(Y)) -> pred1(minus2(X, Y))
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
GCD2(s1(X), s1(Y)) -> IF3(le2(Y, X), s1(X), s1(Y))
minus2(X, s1(Y)) -> pred1(minus2(X, Y))
minus2(X, 0) -> X
pred1(s1(X)) -> X
le2(s1(X), s1(Y)) -> le2(X, Y)
le2(s1(X), 0) -> false
le2(0, Y) -> true
gcd2(0, Y) -> 0
gcd2(s1(X), 0) -> s1(X)
gcd2(s1(X), s1(Y)) -> if3(le2(Y, X), s1(X), s1(Y))
if3(true, s1(X), s1(Y)) -> gcd2(minus2(X, Y), s1(Y))
if3(false, s1(X), s1(Y)) -> gcd2(minus2(Y, X), s1(X))